package solutions.ferpa.ztest.intf;

import br.com.telescope.adsrt.dom.DomDouble;
import br.com.telescope.adsrt.dom.DomId;
import br.com.telescope.adsrt.dom.DomInteger;
import br.com.telescope.adsrt.dom.DomUpper;
import br.com.telescope.t2.ServiceModel;
import br.com.telescope.t2.feature.DeleteFeature;
import br.com.telescope.t2.feature.ListFeature;
import br.com.telescope.t2.feature.MultiRowInsertFeature;
import br.com.telescope.t2.feature.MultiRowUpdateFeature;
import br.com.telescope.t2.feature.QueryFeature;
import br.com.telescope.t2.feature.ViewFeature;
import solutions.ferpa.ztest.ent.*;

/**
 * Vazões e prefixos da séries.
 * <p>
 * Interface para manutenção de Vazão e prefixo da série
 * <P>
 * Telescope origin: ZTEST.CAD_VAZAO_PREFIXO_SERIE
 * <P>
 * Base entity: ZTEST.VAZAO_PREFIXO_SERIE
 * <P>
 * @author TELESCOPE - Build task T2 Web Interface Generator
 * <P>
 * @version 0.1
 */
public class CadVazaoPrefixoSerie extends ServiceModel {
    
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    public static final String GLOBAL_NAME = "ZTEST.CAD_VAZAO_PREFIXO_SERIE";
    
    @Override
    public String globalName() {
        return GLOBAL_NAME;
    }
    
    {
        setTitle("Vazões e prefixos da séries");
    }
    
    protected EntVazaoPrefixoSerie base;
    protected EntVazaoPrefixoSerie rec; // NEED_TJW1_COMPATIBILITY
    
    // Record items
    private DomDouble aVazaoNominal;
    private DomUpper aPrefixoNumeroSerie;
    private DomInteger aAnoReferenciaSequencia;
    private DomInteger aProximaSequenciaProduto;
    private DomId aId;
    
    // Query items
    private DomInteger qProximaSequenciaProduto;
    private DomDouble qVazaoNominal;
    private DomUpper qPrefixoNumeroSerie;
    private DomInteger qAnoReferenciaSequencia;
    
    @Override
    public String getBaseSql() {
        return "select BASE.*"
                + " from VAZAO_PREFIXO_SERIE BASE";
    }
    
    @Override
    public void initAttributes() {
        
        aVazaoNominal = new DomDouble();
        aVazaoNominal.context(ctx).name("VAZAO_NOMINAL").label("Vazão nominal (m3/h)");
        
        aPrefixoNumeroSerie = new DomUpper();
        aPrefixoNumeroSerie.context(ctx).name("PREFIXO_NUMERO_SERIE").label("Prefixo para número de série");
        
        aAnoReferenciaSequencia = new DomInteger();
        aAnoReferenciaSequencia.context(ctx).name("ANO_REFERENCIA_SEQUENCIA").label("Ano referência (próxima sequência)").format("00");
        
        aProximaSequenciaProduto = new DomInteger();
        aProximaSequenciaProduto.context(ctx).name("PROXIMA_SEQUENCIA_PRODUTO").label("Próxima sequência produto");
        
        aId = new DomId();
        aId.context(ctx).name("ID").label("Id");
        
        
        qProximaSequenciaProduto = new DomInteger();
        qProximaSequenciaProduto.context(ctx).name("PROXIMA_SEQUENCIA_PRODUTO").label("Próxima sequência produto");
        
        qVazaoNominal = new DomDouble();
        qVazaoNominal.context(ctx).name("VAZAO_NOMINAL").label("Vazão nominal (m3/h)");
        
        qPrefixoNumeroSerie = new DomUpper();
        qPrefixoNumeroSerie.context(ctx).name("PREFIXO_NUMERO_SERIE").label("Prefixo para número de série");
        
        qAnoReferenciaSequencia = new DomInteger();
        qAnoReferenciaSequencia.context(ctx).name("ANO_REFERENCIA_SEQUENCIA").label("Ano referência (próxima sequência)");
    }
    
    @Override
    public String getQueryPkColumn() {
        return "BASE.ID";
    }
    
    @Override
    public void setId(String value) {
        this.aId.setValue(value);
    }
    
    @Override
    public EntVazaoPrefixoSerie getRecord() {
        if (base == null) {
            base = new EntVazaoPrefixoSerie(ctx);
            rec = base;
        }
        return this.base;
    }
    
    @Override
    public String getContextName() {
        return aVazaoNominal.toText();
    }
    
    @Override
    public String getDefaultOrderBy() {
        return "VAZAO_NOMINAL, PREFIXO_NUMERO_SERIE, ANO_REFERENCIA_SEQUENCIA, PROXIMA_SEQUENCIA_PRODUTO";
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="QUERY">
    public class FQuery extends QueryFeature {
        
        @Override
        public void initForm() {
            addField(qVazaoNominal, "opt");
            addField(qPrefixoNumeroSerie, "opt");
            addField(qAnoReferenciaSequencia, "opt");
            addField(qProximaSequenciaProduto, "opt");
        }
        
        {
            setFeatureName("QUERY");
            setPrimary(false);
        }
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="LIST">
    public class FList extends ListFeature {
        
        @Override
        public void initForm() {
            addField(aVazaoNominal, "view");
            addField(aPrefixoNumeroSerie, "view");
            addField(aAnoReferenciaSequencia, "view");
            addField(aProximaSequenciaProduto, "view");
        }
        
        {
            setFeatureName("LIST");
            setPrimary(false);
        }
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="VIEW">
    public class FView extends ViewFeature {
        
        @Override
        public void initForm() {
            addField(aVazaoNominal, "view");
            addField(aPrefixoNumeroSerie, "view");
            addField(aAnoReferenciaSequencia, "view");
            addField(aProximaSequenciaProduto, "view");
        }
        
        {
            setFeatureName("VIEW");
            setPrimary(false);
        }
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="INSERT">
    public class FInsert extends MultiRowInsertFeature {
        
        @Override
        public void initForm() {
            aVazaoNominal.setOptional(false);
            addField(aVazaoNominal, "rqd");
            aPrefixoNumeroSerie.setOptional(false);
            addField(aPrefixoNumeroSerie, "rqd");
        }
        
        {
            setFeatureName("INSERT");
            setPrimary(false);
            setRows(10);
        }
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="UPDATE">
    public class FUpdate extends MultiRowUpdateFeature {
        
        @Override
        public void initForm() {
            aVazaoNominal.setOptional(false);
            addField(aVazaoNominal, "rqd");
            aPrefixoNumeroSerie.setOptional(false);
            addField(aPrefixoNumeroSerie, "rqd");
            aAnoReferenciaSequencia.setEditable(false);
            addField(aAnoReferenciaSequencia, "view");
            aProximaSequenciaProduto.setEditable(false);
            addField(aProximaSequenciaProduto, "view");
        }
        
        {
            setFeatureName("UPDATE");
            setPrimary(false);
            setRows(10);
        }
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="DELETE">
    public class FDelete extends DeleteFeature {
        
        @Override
        public void initForm() {
            addField(aVazaoNominal, "view");
        }
        
        {
            setFeatureName("DELETE");
            setPrimary(false);
        }
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="initFeatures">
    
    @Override
    protected void initFeatures() {
        addFeature(new FQuery());
        addFeature(new FList());
        addFeature(new FView());
        addFeature(new FInsert());
        addFeature(new FUpdate());
        addFeature(new FDelete());
        super.initFeatures();
    }
    
    @Override
    public String getDefaultFeature() {
        return "QUERY";
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="Getters and Setters">
    
    public Double getVazaoNominal() {
        return aVazaoNominal.getValue();
    }
    
    public void setVazaoNominal(Double value) {
        this.aVazaoNominal.setValue(value);
    }
    
    public String getPrefixoNumeroSerie() {
        return aPrefixoNumeroSerie.getValue();
    }
    
    public void setPrefixoNumeroSerie(String value) {
        this.aPrefixoNumeroSerie.setValue(value);
    }
    
    public Integer getAnoReferenciaSequencia() {
        return aAnoReferenciaSequencia.getValue();
    }
    
    public void setAnoReferenciaSequencia(Integer value) {
        this.aAnoReferenciaSequencia.setValue(value);
    }
    
    public Integer getProximaSequenciaProduto() {
        return aProximaSequenciaProduto.getValue();
    }
    
    public void setProximaSequenciaProduto(Integer value) {
        this.aProximaSequenciaProduto.setValue(value);
    }
    
    @Override
    public Long getId() {
        return aId.getValue();
    }
    
    public void setId(Long value) {
        this.aId.setValue(value);
    }
    public String getQueryVazaoNominal() {
        return qVazaoNominal.getQueryValue();
    }
    
    public void setQueryVazaoNominal(String value) {
        this.qVazaoNominal.setQueryValue(value);
    }
    public String getQueryPrefixoNumeroSerie() {
        return qPrefixoNumeroSerie.getQueryValue();
    }
    
    public void setQueryPrefixoNumeroSerie(String value) {
        this.qPrefixoNumeroSerie.setQueryValue(value);
    }
    public String getQueryAnoReferenciaSequencia() {
        return qAnoReferenciaSequencia.getQueryValue();
    }
    
    public void setQueryAnoReferenciaSequencia(String value) {
        this.qAnoReferenciaSequencia.setQueryValue(value);
    }
    public String getQueryProximaSequenciaProduto() {
        return qProximaSequenciaProduto.getQueryValue();
    }
    
    public void setQueryProximaSequenciaProduto(String value) {
        this.qProximaSequenciaProduto.setQueryValue(value);
    }
    // </editor-fold>
    
}
